package com.huazi.www.drug.drugz.dao;


import com.huazi.www.drug.drugz.enity.ApplyLog;
import com.huazi.www.drug.drugz.enity.Drug;
import com.huazi.www.drug.drugz.enity.DrugStock;
import com.huazi.www.drug.drugz.enity.Medicate;

import java.util.Date;
import java.util.List;

/**
 * 药品dao
 */
public interface DrugDao {

    /**
     * 查询所有药品
     *
     * @return 药品编号  药品名称
     */
    List<Drug> list();

    /**
     * 检查库存状态
     *
     * @return 药品集合
     */
    List<Drug> drugs();

    /**
     * 根据药品编号查询价格   已放弃
     *
     * @param id 药品编号
     * @return 价格
     */
//    double price(int id);

    /**
     * 根据药品名称查询编号    已放弃
     *
     * @param drugName 药品名称
     * @return 药品编号
     */
//    int selDrug(String drugName);

    /**
     * 新增库存申请
     *
     * @param medicate 增加库存
     * @return 1 新增申请成功
     */
    int inStore(Medicate medicate);

    /**
     * 新增药品申请
     *
     * @param medicate 新增药品
     * @return 1 新增申请成功
     */
    int addDrug(Medicate medicate);

    /**
     * 查询总记录数   申请状态
     *
     * @param xuTime 选择的查询时间端
     * @param type   申请类型
     * @return 总记录数
     */
    int totalCount(int xuTime, int type);

    /**
     * 查询分页数据     申请状态
     *
     * @param xuTime   选择的查询时间端
     * @param type     申请类型
     * @param start    起始下标
     * @param pageSize 数据条数
     * @return 每页的数据
     */
    List<Medicate> list(int xuTime, int type, int start, int pageSize);

    /**
     * 补充库存
     *
     * @param drugId 药品编号
     * @return 1     入库成功
     */
    int replenish(int drugId, int count);

    /**
     * 添加申请记录    以放弃
     *
     * @param applyLog 申请记录
     * @return 1 添加成功
     */
//    int applyLog(ApplyLog applyLog);

    /**
     * 新增药品
     *
     * @param drug 药品
     * @return 1 新增成功
     */
    int addDrug(Drug drug);

    /**
     * 更改申请状态
     *
     * @param id 申请编号
     * @return 1 更改成功
     */
    int updMedicate(int id);

    /**
     * 查询总记录数    药品
     *
     * @param drugName 药品名称
     * @param drugType 药品类型
     * @return 总记录数
     */
    int totalCount(String drugName, int drugType);

    /**
     * 查询数据        药品
     *
     * @param drugName 药品名称
     * @param drugType 药品类型
     * @param start    起始下标
     * @param pageSize 页大小
     * @return 分页数据
     */
    List<Drug> list(String drugName, int drugType, int start, int pageSize);

    /**
     * 单独修改药品属性
     *
     * @param drugID    药品编号
     * @param drugField 药品字段
     * @param value     字段属性
     * @return 1 修改成功
     */
    int updDrug(int drugID, String drugField, String value);

    /**
     * 添加药品库存
     *
     * @param drugStock 库存药品对象
     * @param date      入库时间
     * @return 1 表示插入成功
     */
    int drugStork(DrugStock drugStock, Date date);

    /**
     * 根据时间查询相同的库存药品
     *
     * @param date 时间
     * @return 库存名单
     */
    List<DrugStock> list(String date);

}
